columnview: Add a property for column separators
authorMatthias Clasen <mclasen@redhat.com>
Wed, 3 Jun 2020 21:34:35 +0000 (17:34 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 3 Jun 2020 21:57:23 +0000 (17:57 -0400)
Rename the show-separators property to show-row-separators,
and add a matching show-column-separators property. It is
implemented by setting the .column-separators style class
on the column view.

docs/reference/gtk/gtk4-sections.txt
gtk/gtkcolumnview.c
gtk/gtkcolumnview.h

index 5e61658a0a230cf3e58d5aab3bbc711850abeea5..8e88c6d1db017941d379b6ac56eacd26071d16cc 100644 (file)
@@ -514,8 +514,10 @@ gtk_column_view_get_columns
 gtk_column_view_get_model
 gtk_column_view_set_model
 gtk_column_view_get_sorter
-gtk_column_view_get_show_separators
-gtk_column_view_set_show_separators
+gtk_column_view_get_show_row_separators
+gtk_column_view_set_show_row_separators
+gtk_column_view_get_show_column_separators
+gtk_column_view_set_show_column_separators
 gtk_column_view_sort_by_column
 gtk_column_view_set_single_click_activate
 gtk_column_view_get_single_click_activate
index 2a8080733b907e418412476016b93e5520a930df..e7ef11d7977cc7892acef8b1e963b237eb13b3a2 100644 (file)
@@ -73,6 +73,7 @@ struct _GtkColumnView
   GtkAdjustment *hadjustment;
 
   gboolean reorderable;
+  gboolean show_column_separators;
 
   gboolean in_column_resize;
   gboolean in_column_reorder;
@@ -100,7 +101,8 @@ enum
   PROP_HADJUSTMENT,
   PROP_HSCROLL_POLICY,
   PROP_MODEL,
-  PROP_SHOW_SEPARATORS,
+  PROP_SHOW_ROW_SEPARATORS,
+  PROP_SHOW_COLUMN_SEPARATORS,
   PROP_SORTER,
   PROP_VADJUSTMENT,
   PROP_VSCROLL_POLICY,
@@ -378,10 +380,14 @@ gtk_column_view_get_property (GObject    *object,
       g_value_set_object (value, gtk_list_view_get_model (self->listview));
       break;
 
-    case PROP_SHOW_SEPARATORS:
+    case PROP_SHOW_ROW_SEPARATORS:
       g_value_set_boolean (value, gtk_list_view_get_show_separators (self->listview));
       break;
 
+    case PROP_SHOW_COLUMN_SEPARATORS:
+      g_value_set_boolean (value, self->show_column_separators);
+      break;
+
     case PROP_VADJUSTMENT:
       g_value_set_object (value, gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (self->listview)));
       break;
@@ -453,8 +459,12 @@ gtk_column_view_set_property (GObject      *object,
       gtk_column_view_set_model (self, g_value_get_object (value));
       break;
 
-    case PROP_SHOW_SEPARATORS:
-      gtk_column_view_set_show_separators (self, g_value_get_boolean (value));
+    case PROP_SHOW_ROW_SEPARATORS:
+      gtk_column_view_set_show_row_separators (self, g_value_get_boolean (value));
+      break;
+
+    case PROP_SHOW_COLUMN_SEPARATORS:
+      gtk_column_view_set_show_column_separators (self, g_value_get_boolean (value));
       break;
 
     case PROP_VADJUSTMENT:
@@ -546,17 +556,29 @@ gtk_column_view_class_init (GtkColumnViewClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
 
   /**
-   * GtkColumnView:show-separators:
+   * GtkColumnView:show-row-separators:
    *
    * Show separators between rows
    */
-  properties[PROP_SHOW_SEPARATORS] =
-    g_param_spec_boolean ("show-separators",
-                          P_("Show separators"),
+  properties[PROP_SHOW_ROW_SEPARATORS] =
+    g_param_spec_boolean ("show-row-separators",
+                          P_("Show row separators"),
                           P_("Show separators between rows"),
                           FALSE,
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
+  /**
+   * GtkColumnView:show-column-separators:
+   *
+   * Show separators between columns
+   */
+  properties[PROP_SHOW_COLUMN_SEPARATORS] =
+    g_param_spec_boolean ("show-column-separators",
+                          P_("Show column separators"),
+                          P_("Show separators between columns"),
+                          FALSE,
+                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+
   /**
    * GtkColumnView:sorter:
    *
@@ -712,7 +734,7 @@ gtk_column_view_in_header (GtkColumnView       *self,
   GtkWidget *header;
   graphene_rect_t rect;
 
-  header = gtk_column_view_column_get_header (column);
+header = gtk_column_view_column_get_header (column);
 
   if (!gtk_widget_compute_bounds (header, self->header, &rect))
     return FALSE;
@@ -1112,44 +1134,88 @@ gtk_column_view_get_columns (GtkColumnView *self)
 }
 
 /**
- * gtk_column_view_set_show_separators:
+ * gtk_column_view_set_show_row_separators:
  * @self: a #GtkColumnView
- * @show_separators: %TRUE to show separators
+ * @show_separators: %TRUE to show row separators
  *
  * Sets whether the list should show separators
  * between rows.
  */
 void
-gtk_column_view_set_show_separators (GtkColumnView *self,
-                                     gboolean     show_separators)
+gtk_column_view_set_show_row_separators (GtkColumnView *self,
+                                         gboolean     show_row_separators)
 {
   g_return_if_fail (GTK_IS_COLUMN_VIEW (self));
 
-  if (gtk_list_view_get_show_separators (self->listview) == show_separators)
+  if (gtk_list_view_get_show_separators (self->listview) == show_row_separators)
     return;
 
-  gtk_list_view_set_show_separators (self->listview, show_separators);
+  gtk_list_view_set_show_separators (self->listview, show_row_separators);
 
-  g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SHOW_SEPARATORS]);
+  g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SHOW_ROW_SEPARATORS]);
 }
 
 /**
- * gtk_column_view_get_show_separators:
+ * gtk_column_view_get_show_row_separators:
  * @self: a #GtkColumnView
  *
- * Returns whether the list box should show separators
+ * Returns whether the list should show separators
  * between rows.
  *
- * Returns: %TRUE if the list box shows separators
+ * Returns: %TRUE if the list shows separators
  */
 gboolean
-gtk_column_view_get_show_separators (GtkColumnView *self)
+gtk_column_view_get_show_row_separators (GtkColumnView *self)
 {
   g_return_val_if_fail (GTK_IS_COLUMN_VIEW (self), FALSE);
 
   return gtk_list_view_get_show_separators (self->listview);
 }
 
+/**
+ * gtk_column_view_set_show_column_separators:
+ * @self: a #GtkColumnView
+ * @show_column_separators: %TRUE to show column separators
+ *
+ * Sets whether the list should show separators
+ * between columns.
+ */
+void
+gtk_column_view_set_show_column_separators (GtkColumnView *self,
+                                            gboolean     show_column_separators)
+{
+  g_return_if_fail (GTK_IS_COLUMN_VIEW (self));
+
+  if (self->show_column_separators == show_column_separators)
+    return;
+
+  self->show_column_separators = show_column_separators;
+
+  if (show_column_separators)
+    gtk_widget_add_css_class (GTK_WIDGET (self), "column-separators");
+  else
+    gtk_widget_remove_css_class (GTK_WIDGET (self), "column-separators");
+
+  g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SHOW_COLUMN_SEPARATORS]);
+}
+
+/**
+ * gtk_column_view_get_show_column_separators:
+ * @self: a #GtkColumnView
+ *
+ * Returns whether the list should show separators
+ * between columns.
+ *
+ * Returns: %TRUE if the list shows column separators
+ */
+gboolean
+gtk_column_view_get_show_column_separators (GtkColumnView *self)
+{
+  g_return_val_if_fail (GTK_IS_COLUMN_VIEW (self), FALSE);
+
+  return self->show_column_separators;
+}
+
 /**
  * gtk_column_view_append_column:
  * @self: a #GtkColumnView
index 69bf8c7a19537ba381fc2ea6100da2071c0f70c8..fb393e4ac6761f0cd872b0aeb0c116fd4b5aa806 100644 (file)
@@ -73,10 +73,16 @@ void            gtk_column_view_set_model                       (GtkColumnView
                                                                  GListModel             *model);
 
 GDK_AVAILABLE_IN_ALL
-gboolean        gtk_column_view_get_show_separators             (GtkColumnView          *self);
+gboolean        gtk_column_view_get_show_row_separators         (GtkColumnView          *self);
 GDK_AVAILABLE_IN_ALL
-void            gtk_column_view_set_show_separators             (GtkColumnView          *self,
-                                                                 gboolean                show_separators);
+void            gtk_column_view_set_show_row_separators         (GtkColumnView          *self,
+                                                                 gboolean                show_row_separators);
+
+GDK_AVAILABLE_IN_ALL
+gboolean        gtk_column_view_get_show_column_separators      (GtkColumnView          *self);
+GDK_AVAILABLE_IN_ALL
+void            gtk_column_view_set_show_column_separators      (GtkColumnView          *self,
+                                                                 gboolean                show_column_separators);
 
 GDK_AVAILABLE_IN_ALL
 GtkSorter *     gtk_column_view_get_sorter                      (GtkColumnView          *self);